package com.zjg.dao.impl;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.common.dao.BaseDao;
import com.common.entity.A_adminer;
import com.common.entity.A_online;
import com.common.entity.PageBean;
import com.lyk.dao.A_adminerDao;
import com.lyk.dao.impl.A_adminerDaoImpl;
import com.zjg.dao.OnlineDao;

public class OnlineDaoImpl extends BaseDao<A_online> implements OnlineDao {
	private A_adminerDao adminerDao=new A_adminerDaoImpl();
	private A_adminer adminer=null;
	@Override
	public List<A_online> findByCondition(Map<String, Object> map) {
		List<Object> paramList=new ArrayList<Object>();
		StringBuffer sf=new StringBuffer();
		sf.append(" select * from a_online where 1=1 ");
		if(map!=null && map.size()>0){
			if(map.get("admin_id")!=null){
				sf.append("and admin_id=? ");
				paramList.add(map.get("admin_id"));
			}
			if(map.get("start_time")!=null){
				String str=(String) map.get("start_time");
				sf.append("and start_time > to_date('?','yyyy-mm-dd hh24:mi:ss')");
				if(str.contains("&"))
				{
					sf.append("and start_time < to_date('?','yyyy-mm-dd hh24:mi:ss')");
					String time[]=str.split("&");
					paramList.add(time[0]);
					paramList.add(time[1]);
				}
				else
				{
					paramList.add(str);
				}
			}
		}
		return this.findBySql(sf.toString(), paramList.toArray());
	}

	@Override
	public PageBean<A_online> findPageByCondition(int pageIndex, int pageSize,
			Map<String, Object> map) {
		PageBean<A_online> pageBean=new PageBean<A_online>();
		
		pageBean.setPageIndex(pageIndex);
		pageBean.setPageSize(pageSize);
		
		List<Object> paramList=new ArrayList<Object>();
		StringBuffer querySql=new StringBuffer();
		querySql.append(" select * from a_online where 1=1");
		if(map!=null && map.size()>0){
		}
		
		pageBean.setTotalCount(this.getCount(querySql.toString(), paramList.toArray()));
		
		if(pageBean.getTotalCount()>0){
			StringBuffer queryPageSql=new StringBuffer();
			queryPageSql.append(" select * from (");
			queryPageSql.append("  select tmp.*,rownum rn from ( ");
			queryPageSql.append(querySql.toString());
			queryPageSql.append("  ) tmp ");
			queryPageSql.append(" ) where rn>? and rn<=? ");
			int startRow=(pageBean.getPageIndex()-1)*pageBean.getPageSize();
			int endRow=pageBean.getPageIndex()*pageBean.getPageSize();
			paramList.add(startRow);
			paramList.add(endRow);
			pageBean.setList(this.findBySql(queryPageSql.toString(), paramList.toArray()));
		}
		return pageBean;
	}

	@Override
	public A_online findById(Integer id) {
		List<Object> paramList=new ArrayList<Object>();
		StringBuffer sf=new StringBuffer();
		sf.append(" select * from a_online where online_id=? ");
		paramList.add(id);
		List<A_online> list=this.findBySql(sf.toString(), paramList.toArray());
		return (list!=null && list.size()>0)?list.get(0):null;
	}

	@Override
	public Object saveA_online(A_online entity) {
		String sql="insert into a_online(online_id,admin_id,start_time,end_time,browser,actip) values(seq_a_online.nextval,?,?,?,?,?)";
		List<Object> paramList=new ArrayList<Object>();
		paramList.add(entity.getAdmin_id());
		paramList.add(entity.getStart_time());
		paramList.add(entity.getEnd_time());
		paramList.add(entity.getBrowser());
		paramList.add(entity.getActip());
		return this.executeUpdate(sql, paramList.toArray(),new String[]{"online_id"});
	}
	
	@Override
	public int updateA_online(A_online entity) {
		String sql="update a_online set admin_id=?,start_time=?,end_time=?,browser=?,actip=? where online_id=?";
		List<Object> paramList=new ArrayList<Object>();
		paramList.add(entity.getAdmin_id());
		paramList.add(entity.getStart_time());
		paramList.add(entity.getEnd_time());
		paramList.add(entity.getBrowser());
		paramList.add(entity.getActip());
		paramList.add(entity.getOnline_id());
		return (Integer) this.executeUpdate(sql, paramList.toArray(),null);
	}

	@Override
	public int deleteA_online(Integer id) {
		String sql="delete a_online where online_id=?";
		return (Integer) this.executeUpdate(sql, new Object[]{id},null);
	}

	@Override
	public A_online getEntity(ResultSet rs) {
		try {
			A_online entity=new A_online();
			entity.setOnline_id(rs.getInt("online_id"));
			entity.setAdmin_id(rs.getInt("admin_id"));
			entity.setStart_time(rs.getTimestamp("start_time"));
			entity.setEnd_time(rs.getTimestamp("end_time"));
			entity.setBrowser(rs.getString("browser"));
			entity.setActip(rs.getString("actip"));
			adminer=adminerDao.findById(rs.getInt("admin_id"));
			entity.setAdminer(adminer);
			return entity;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
}
